3349. Adjacent Increasing Subarrays Detection I
Easy
- 題目描述
- 解答
Description
Given an array nums of n integers and an integer k, determine whether there exist two adjacent subarrays of length k such that both subarrays are strictly increasing. Specifically, check if there are two subarrays starting at indices a and b (a < b), where:
- Both subarrays nums[a..a + k - 1] and nums[b..b + k - 1] are strictly increasing.
- The subarrays must be adjacent, meaning b = a + k. Return true if it is possible to find two such subarrays, and false otherwise.
Example 1:
Input: nums = [2,5,7,8,9,2,3,4,3,1], k = 3
Output: true
Explanation:
- The subarray starting at index 2 is [7, 8, 9], which is strictly increasing.
- The subarray starting at index 5 is [2, 3, 4], which is also strictly increasing.
- These two subarrays are adjacent, so the result is true.
Example 2:
Input: nums = [1,2,3,4,4,4,4,5,6,7], k = 5
Output: false
Constraints:
2 <= nums.length <= 1001 < 2 \* k <= nums.length-1000 <= nums[i] <= 1000
Solution
/**
* @param {number[]} nums
* @param {number} k
* @return {boolean}
*/
var hasIncreasingSubarrays = function (nums, k) {
const isIncreasing = (start) => {
for (let i = start; i < start + k - 1; i++) {
if (nums[i] >= nums[i + 1]) return false;
}
return true;
};
for (let i = 0; i + 2 * k <= nums.length; i++) {
if (isIncreasing(i) && isIncreasing(i + k)) {
return true;
}
}
return false;
};
解題思路
題目要找出是否存在符合條件的兩個 subarray:
- 兩個 subarray 的長度皆為
k - 兩個 subarray 都是 strictly increasing
- 兩個 subarray 要相鄰,中間不能有其他值
首先定義一個 helper function isIncreasing ,判斷兩個 subarray 是否都是 strictly increasing
const isIncreasing = (start) => {
for (let i = start; i < start + k - 1; i++) {
if (nums[i] >= nums[i + 1]) return false;
}
return true;
};
接著使用 isIncreasing 來判斷是否存在符合條件的兩個 subarray,兩者都嚴格遞增就回傳 true,否則回傳 false
for (let i = 0; i + 2 * k <= nums.length; i++) {
// i + 2 * k 是因為檢查的是兩個長度為 k 的相鄰 subarray
// <= nums.length 是因為最後一個 subarray 的範圍不能超過陣列長度
if (isIncreasing(i) && isIncreasing(i + k)) {
return true;
}
}
return false;
心得
使用 helper function 來簡化結構。